home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Resources / Online / Term / Extras / Source / gtlayout-source.lha / LTP_DrawTapeButton.c < prev    next >
C/C++ Source or Header  |  1996-03-18  |  2KB  |  112 lines

  1. /*
  2. **    GadTools layout toolkit
  3. **
  4. **    Copyright © 1993-1996 by Olaf `Olsen' Barthel
  5. **        Freely distributable.
  6. **
  7. **    :ts=4
  8. */
  9.  
  10. #ifndef _GTLAYOUT_GLOBAL_H
  11. #include "gtlayout_global.h"
  12. #endif
  13.  
  14. #ifdef DO_TAPEDECK_KIND
  15. VOID
  16. LTP_DrawTapeButton(struct RastPort *RPort,ImageInfo *imageInfo,LONG Left,LONG Top,LONG Width,LONG Height,LONG AspectX,LONG AspectY,LONG Background)
  17. {
  18.     LONG    SizeX,SizeY,Mid,Size;
  19.     LONG    ImageType;
  20.  
  21.     ImageType    = imageInfo -> ImageType;
  22.     SizeX        = imageInfo -> GlyphWidth;
  23.     SizeY        = imageInfo -> GlyphHeight;
  24.  
  25.     Left    += 6;
  26.     Top        += 3;
  27.  
  28.     Width    -= 2 * 6;
  29.     Height    -= 2 * 3;
  30.  
  31.     if(!SizeY)
  32.         SizeY = Height;
  33.  
  34.     if(!SizeX)
  35.     {
  36.         SizeX = (SizeY * AspectY) / AspectX;
  37.  
  38.         if(ImageType == IMAGECLASS_BACKWARD || ImageType == IMAGECLASS_FORWARD)
  39.             SizeX *= 2;
  40.     }
  41.  
  42.     if(SizeX > 0 && SizeY > 0)
  43.     {
  44.         switch(ImageType)
  45.         {
  46.             case IMAGECLASS_BACKWARD:
  47.             case IMAGECLASS_FORWARD:
  48.  
  49.                 Left    = Left + (Width - SizeX) / 2;
  50.                 Top        = Top + (Height - SizeY) / 2;
  51.  
  52.                 LTP_DrawBackFore(RPort,ImageType == IMAGECLASS_BACKWARD,Left,Top,SizeX,SizeY);
  53.                 break;
  54.  
  55.             case IMAGECLASS_PREVIOUS:
  56.             case IMAGECLASS_NEXT:
  57.  
  58.                 Left    = Left + (Width - SizeX) / 2;
  59.                 Top        = Top + (Height - SizeY) / 2;
  60.  
  61.                 LTP_DrawPrevNext(RPort,ImageType == IMAGECLASS_PREVIOUS,Left,Top,SizeX,SizeY);
  62.                 break;
  63.  
  64.             case IMAGECLASS_EJECT:
  65.  
  66.                 Left    = Left + (Width - SizeX) / 2;
  67.                 Top        = Top + (Height - SizeY) / 2;
  68.  
  69.                 LTP_DrawPicker(RPort,TRUE,Left,Top,SizeX,SizeY);
  70.                 break;
  71.  
  72.             case IMAGECLASS_RECORD:
  73.  
  74.                 LTP_RenderCircle(RPort,Left + Width / 2,Top + Height / 2,SizeY / 2,AspectX,AspectY);
  75.                 break;
  76.  
  77.             case IMAGECLASS_PLAY:
  78.             case IMAGECLASS_REWIND:
  79.  
  80.                 Left    = Left + (Width - SizeX) / 2;
  81.                 Top        = Top + (Height - SizeY) / 2;
  82.  
  83.                 LTP_RenderArrow(RPort,ImageType == IMAGECLASS_REWIND,Left,Top,SizeX,SizeY);
  84.                 break;
  85.  
  86.             case IMAGECLASS_STOP:
  87.  
  88.                 Left    = Left + (Width - SizeX) / 2;
  89.                 Top        = Top + (Height - SizeY) / 2;
  90.  
  91.                 LTP_FillBox(RPort,Left,Top,SizeX,SizeY);
  92.                 break;
  93.  
  94.             case IMAGECLASS_PAUSE:
  95.  
  96.                 Left    = Left + (Width - SizeX) / 2;
  97.                 Top        = Top + (Height - SizeY) / 2;
  98.  
  99.                 LTP_FillBox(RPort,Left,Top,SizeX,SizeY);
  100.  
  101.                 Size    = SizeX - (2 * SizeX) / 3;
  102.                 Mid        = SizeX / 3;
  103.  
  104.                 LTP_SetAPen(RPort,Background);
  105.                 LTP_FillBox(RPort,Left + Mid,Top,Size,SizeY);
  106.  
  107.                 break;
  108.         }
  109.     }
  110. }
  111. #endif    /* DO_TAPEDECK_KIND */
  112.